package com.cgc.venus.server.user.inter;

import com.cgc.venus.server.core.bean.page.PageQuery;
import com.cgc.venus.server.core.exception.VenusException;
import com.cgc.venus.server.user.bean.UserBean;

import java.util.List;
import java.util.Map;

/**
 * Created by xyr on 2017/9/4.
 * 用户管理模块,dao层接口
 */
public interface UserService {

    /*
    * 根据用户账号和登录密码,得到用户的ID
    * */
    String getUserId(String loginName,String loginPassword) throws VenusException;

    /*
    * 登记用户登录信息
    * */
    int register(String loginName,String token) throws VenusException;

    /*
    * 登出
    * */
    int logout(String token) throws VenusException;

    /*
    * token验证
    * */
    Map<String,Object> validateToken(String token) throws VenusException;

    /*
    * 登录账号验证
    * */
    int validateAccount(String loginName) throws VenusException;

    /*
    * 新增用户
    * */
    int addUser(UserBean userBean) throws VenusException;

    /*
    * 修改用户信息
    * */
    int updateUser(UserBean userBean) throws VenusException;

    /*
    * 分页查询,查询全部用户信息
    * */
    List<Map<String,Object>> queryAllUser(int page,int pageSize) throws VenusException;

    /*
    * 统计所有用户信息数量
    * */
    long countAllUser(PageQuery pageQuery) throws VenusException;

    /*
    * 分页查询,根据输入关键字,模糊查询用户信息
    * */
    List<Map<String,Object>> queryUserByKey(PageQuery pageQuery) throws VenusException;

    /*
    * 根据用户的ID,删除用户信息
    * */
    int deleteUserById(String userId) throws VenusException;


    /*
    * 根据登录的token,获得用户的信息
    * */
    Map<String,Object> getUserByToken(String token) throws VenusException;

    /*
    * 根据功能菜单ID,获得没有禁用的功能菜单
    * */
    Map<String,Object> getFunctionById(String id) throws VenusException;

    /*
    * 根据用户ID,修改用户密码
    * */
    int updatePasswordById(String userId, String password) throws VenusException;


    /*
    * 根据登录token,更新登录时间
    * */
    int updateLoginTime(String token) throws VenusException;

    /*
    * 获得登录用户的团队信息，根据用户ID，和是否超级管理员
    * */
    List<Map<String,Object>> getTeamCombobox(String userId, int isSuperAdmin) throws VenusException;

    /*
    * 根据团队ID，获得空间信息
    * */
    List<Map<String,Object>> getNamespaceCombobox(String teamId,String userId,int isSuperAdmin) throws VenusException;

    /*
    * 根据用户ID,获得团队信息,删除用户时候用
    * */
    List<Map<String, Object>> getTeamByUserId(String userId);

    /*
    * 根据用户的ID,获得空间信息
    * */
    List<Map<String,Object>> getNamespaceByUserId(String userId);


    /*
    * 根据用户ID,获取空间,团队信息
    * */
    List<Map<String,Object>> getNamespaceAndTeamByUserId(String userId) throws VenusException;

    /*
    * 获取空间,团队信息
    * */
    List<Map<String,Object>> getNamespaceAndTeam() throws VenusException;

   /*
   * 根据空间获取应用数量
   * */
   long getAppCountByNamespace(String namespace) throws VenusException;

   /*
   * 根据空间,获取k8spod数量
   * */
   int getPodCountByNamespace(String namespace) throws VenusException;


   /*
   * 根据用户ID,获取团队信息
   * */
    List<Map<String,Object>> getTeamBaseByUserId(String userId) throws VenusException;

    /*
    * 获取团队信息
    * */
    List<Map<String,Object>> getTeamBase() throws VenusException;

    /*
    * 根据团队名称,统计团队所属空间数量,或用户数量
    * */
    Map<String,Object> countNamespaceAndUserByTeam(String teamNameCn) throws VenusException;

    /*
    * 根据用户的ID,修改用户的手机号
    * */
    int editPhone(String userId,String phone) throws VenusException;

    /*
    * 根据用户的ID,修改邮箱
    * */
    int editEmail(String userId,String email) throws VenusException;

}
